package com.anran.common.utils;

import lombok.experimental.UtilityClass;

import java.math.BigDecimal;

@UtilityClass
public class DecimalUtil {

    /**
     * -1，前者小于后者；0，前者等于后者；1，前者大于后者
     */
    public static int compare(Object s1, Object s2) {
        if(s1 == null || s1 == "") {
            s1 = 0 ;
        }
        if(s2 == null || s2 == "") {
            s2 = 0 ;
        }
        return compare(String.valueOf(s1),String.valueOf(s2)) ;
    }

    /**
     * 加法
     * @param v1
     * @param v2
     * @return
     */
    public static double add(double v1 , double v2){
        BigDecimal b1 = BigDecimal.valueOf(v1);
        BigDecimal b2 = BigDecimal.valueOf(v2);

        return b1.add(b2).doubleValue();
    }

    public static BigDecimal add(BigDecimal s1, BigDecimal s2, int scale) {
        if(s1 == null) {
            s1 = new BigDecimal(0d);
        }
        if(s2 == null) {
            s2 = new BigDecimal(0d);
        }
        BigDecimal result = s1.add(s2);
        result = result.setScale(scale, BigDecimal.ROUND_HALF_UP);
        return result ;
    }

    /**
     * 减法
     * @param v1
     * @param v2
     * @return
     */
    public static double sub(double v1,double v2){
        BigDecimal b1 = BigDecimal.valueOf(v1);
        BigDecimal b2 = BigDecimal.valueOf(v2);
        return b1.subtract(b2).doubleValue();
    }

    /**
     * 乘法
     * @param v1
     * @param v2
     * @return
     */
    public static double mul(double v1,double v2){
        BigDecimal b1 = BigDecimal.valueOf(v1);
        BigDecimal b2 = BigDecimal.valueOf(v2);
        return b1.multiply(b2).doubleValue();

    }
    /**
     * 除法
     * @param v1
     * @param v2
     * @return
     */
    public static double divide(int v1, int v2){
        if (v2 <= 0){
            throw new IllegalArgumentException("除数非法");
        }

        BigDecimal b1 = BigDecimal.valueOf(v1);
        BigDecimal b2 = BigDecimal.valueOf(v2);
        return b1.divide(b2,2,BigDecimal.ROUND_HALF_UP).doubleValue();
    }
}
